package com.tonglin.springboot.service;

import com.tonglin.springboot.mapper.UserMapper;
import com.tonglin.springboot.po.Status02;
import com.tonglin.springboot.po.User;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/***
 *
 * 修改密码
 *    1.首先接受用户传来的id、name、newPassword、confirmPassword
 *    对这些信息进行校验
 *      1.如果id存在且name存在，并且id和name能匹配上，则进行修改密码操作
 *      2.然后判断newPassword和confirmPassword是否一样，不一样则显示密码不一样
 *
 *
 */

@Service
public class UpdateService {

    @Autowired
    UserMapper userMapper;
    Status02 status02 = new Status02();

    public Status02 updateService(Integer id,String name,String newPassword,String confirmPassword){
        // 1.如果id存在且name存在，并且id和name能匹配上，则进行修改密码操作
              //1.先判断id是否在数据库中，然后根据name查询，判断id是否正确
              //如果id不存在数据库中，返回。。。
              //name不在，返回。。。。
              //如果name在，id匹配不到，返回。。。。
        //2.进行密码修改
        //判断数据中有没有用户输入的id

        //id、name、newPassword、confirmPassword判空
        if(StringUtils.isBlank(id.toString())||StringUtils.isBlank(name)||StringUtils.isBlank(newPassword)||StringUtils.isBlank(confirmPassword)){
            status02.setMsg("用户id、名字、新密码和确认密码都不能为空！");
            status02.setCode(false);
            return status02;
        }

        List<Integer> list = userMapper.select();

        boolean isCon = list.contains(id);
        System.out.println(isCon);
        if (!isCon){
            status02.setMsg("用户id不存在，请输入正确的id！");
            status02.setCode(false);
            return status02;
        }
        //根据用户查询信息，判断有没有name
        User user = userMapper.queryUserByname(name);
        System.out.println(user.getUserName());

        if(user==null||(user!=null&&user.getUserID()!=id)){

            status02.setCode(false);
            status02.setMsg("用户名错误！请重新输入！");
            return status02;
        }
        if(!newPassword.equals(confirmPassword)){
            status02.setCode(false);
            status02.setMsg("两次密码输入的不一样，请再次检查！");
            return status02;
        }

        User user1 = new User();
        user1.setUserID(id);
        user1.setUserPSW(newPassword);
        user1.setUserName(name);

        int temp = userMapper.update(user1);

        if(temp<1){
            status02.setCode(false);
            status02.setMsg("修改密码失败，请重新检查！");
            return status02;

        }
        status02.setCode(true);
        status02.setMsg("修改成功！");

        return status02;


    }
}
